1. Field of the Invention
This invention relates to computer systems and, more particularly, to communication protocols and mechanisms for transferring video data in high performance multimedia computer systems.
2. Description of the Related Art
Computer architectures generally include a plurality of devices interconnected by one or more buses. For example, conventional computer systems typically include a CPU coupled through bridge logic to a main memory. The bridge logic also typically couples to a high bandwidth local expansion bus, such as the Peripheral Component Interconnect (PCI) bus or the VESA (Video Electronics Standards Association) VL bus. Modern local bus standards such as the PCI bus and the VL bus are not constrained by a requirement to be backwards compatible with prior expansion bus adapters, and thus may provide much higher throughput than older expansion buses. Examples of devices which can be coupled to local expansion buses include video accelerators, video compressors and decompressors, audio cards, SCSI adapters, telephony cards, and network interface cards, among many others. An older-style expansion bus may also be coupled to the local expansion bus to provide compatibility with earlier-version expansion bus adapters. Examples of such earlier expansion buses include the industry standard architecture (ISA) bus, also referred to as the AT bus, the extended industry standard architecture (EISA) bus, and the microchannel architecture (MCA) bus. Various devices may be coupled to this second expansion bus, including a fax/modem, sound card, etc.
Computer systems were originally developed for business applications including word processing and spreadsheet applications, among others. Recently, computer systems have increasingly been employed in the processing of multimedia applications including a variety of video and audio applications such as compression and decompression, video capture and playback, telephony, and speech recognition. To support high performance within such multimedia systems, data must not only be provided to (and processed by) the main CPU extremely fast, but also must typically be conveyed quickly to various other subsystems which support the multimedia functionality. Due in part to the limited bandwidth of the expansion bus, in some situations real time devices can become "starved" for data, particularly when a relatively large number of real time devices are included within the system. This can correspondingly result in degraded performance, unsynchronized audio and video, and the dropping of frames during video or animation sequences. It is thus important to utilize the available bandwidth of the expansion bus efficiently.
In some situations, a particular piece of data may need to be conveyed to more than a single device residing on the expansion bus. For example, it may be desirable to provide video data from a video input digitizer to a frame buffer for displaying a real time video sequence and to also transfer the data to a video compressor to allow subsequent conveyance of compressed video data to other components of the system. While the establishment of improved local expansion bus standards such as the PCI bus standard has allowed higher throughput, most bus transfer protocols only allow for a single data source device and a single data destination device to be specified during a particular bus transaction. Accordingly, separate bus cycles must typically be effectuated upon the expansion bus to complete the desired transfers. The effectuation of separate bus cycles on the expansion bus consumes valuable bandwidth and can limit the overall performance of the system.
Therefore, an improved system and method are desirable which allow multimedia data including video data to be quickly transferred to more than a single destination device at a time to thereby attain more efficient usage of the available bandwidth of the expansion bus and accommodate higher performance multimedia computer systems.